package com.sunni.反射;

import com.sunni.反射.entity.Person;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Method;
import java.util.Properties;

public class _05_案例 {

    /*
    * 通过反射，创建properties文件里 指定的类、执行指定的方法
    * */

    public static void main(String[] args) throws Exception {
        // 1.配置
        // 1.1 创建properties对象
        Properties properties = new Properties();
        // 1.2 获取class目录下的配置文件
        ClassLoader classLoader = _05_案例.class.getClassLoader();
        InputStream is = classLoader.getResourceAsStream("pro.properties");
        properties.load(is);

        //2.获取properties文件中的数据
        String className = properties.getProperty("className");
        String methodName = properties.getProperty("methodName");

        //3.实例化类
        // 3.1 加载类
        // 3.2 实例化对象(newInstance)
        Class classObject = Class.forName(className);
        Object object = classObject.newInstance();

        //4.执行对象的方法
        // 4.1 获取方法(根据方法名)
        Method method = classObject.getMethod(methodName);
        // 4.2 执行方法(哪个对象的)
        method.invoke(object);
    }
}
